package com.example.springboot.context;

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Configuration;

import javax.annotation.PreDestroy;

/**
 * DisposableBean, 当容器销毁这个 Bean 的时候会调用。
 * <p> 其触发时机为当此对象销毁时，会自动执行这个方法。比如说运行applicationContext.registerShutdownHook时，就会触发这个方法
 * <p> 仅对 单例 Bean 有效。
 * <p> 常用来做 资源释放（比如关闭连接、清理缓存、关闭线程池等）
 * <p>
 * <p>
 * @author Zhang.Z
 * @version 2025-09-21
 * @see InitializingBean
 */
@Configuration
public class Test16DisposableBean implements DisposableBean {

    /**
     * 对应@PostConstruct，一个创建一个销毁。
     * <p> 先于 DisposableBean.destroy() 方法执行 。
     */
    @PreDestroy
    public void preDestroy(){
        System.out.println("test16 pre destroy");
    }

    @Override
    public void destroy() throws Exception {
        System.out.println("test16 destroy bean");
    }


}
